Page({
  data: {
    tabbar: [],
    menuHeight: "",   // 菜单高度
    currentTab: null, // 预设当前项的值
    scrollTop: 0      // tab标题的滚动条位置
  },
  onLoad: async function (options) {
    if (options.id) {
      this.data.currentTab = options.id;
    }
    wx.getSystemInfo({
      success: res => {
        this.setData({
          menuHeight: res.windowHeight - res.windowWidth / 750 * 92
        });
      }
    });
    let {
      currentTab,
      tabbar,
      tabpage
    } = await this.getCategory();
    this.setData({
      banner: await this.getBanner(),
      currentTab: currentTab,
      tabbar: tabbar,
      tabpage: tabpage
    });
  },
  getBanner: async function () {
    let banner = await wx.util.request('common.adv', {query: 'location=cate_top'});
    return banner.cate_top;
  },
  getCategory: async function () {
    let res = await wx.util.request('product.category.recursive');
    let currentTab, tabbar = [], tabpage = {};
    for (let i in res) {
      let item = res[i];
      // 如果没有子分类则不显示（最高只支持到第三级）
      if (item.child == undefined) {
        continue;
      }
      // 默认选择第一个一级分类
      if (tabbar.length == 0) {
        currentTab = item.id;
      }
      tabbar.push({id: item.id, title: item.title});
      // 子分类
      let lvl2 = {};
      let lvl3 = [];
      // 将原始数组转换成对象
      for (let x in item.child) {
        lvl2[x] = item.child[x];
      }
      // 将无第三级分类的二级分类统一显示
      for (let j = 0; j < item.child.length; j++) {
        if (lvl2[j].child == undefined || !lvl2[j].child.length) {
          lvl3.push(lvl2[j]);
          lvl2.more = lvl3;
          delete lvl2[j];
        }
      }
      tabpage[item.id] = lvl2;
    }
    return {
      currentTab: this.data.currentTab || currentTab,
      tabbar: tabbar,
      tabpage: tabpage
    };
  },
  // 点击标题切换当前页时改变样式
  swichNav: function (e) {
    let cur = e.currentTarget.dataset.current;
    if (this.data.currentTab == cur) {
      return false;
    } else {
      wx.pageScrollTo({
        scrollTop: 0
      });
      this.setData({
        currentTab: cur
      });
      this.checkCor();
    }
  },
  // 判断当前滚动超过一屏时，设置tab标题滚动条。
  checkCor: function () {
    // 这里计算按照实际情况进行修改，动态数据要进行动态分析
    // 思路：窗体高度/单个分类高度 200rpx 转px计算 =>得到一屏幕所显示的个数，结合后台传回分类总数进行计算
    // 数据很多可以多次if判断然后进行滚动距离计算即可
    if (this.data.currentTab > 7) {
      this.setData({
        scrollTop: 500
      });
    } else {
      this.setData({
        scrollTop: 0
      });
    }
  },
  bannerNav: function (e) {
    let idx = e.currentTarget.dataset.idx;
    let target = this.data.banner[idx];
    wx.navigateTo({
      url: `..${wx.util.enum('jump', target.jump_type)}?id=${target.jump_link}`
    });
  },
  productList: function (e) {
    let value = e.currentTarget.dataset.value || '';
    wx.navigateTo({
      url: `../product/index?param=cate_id&val=${value}`
    });
  },
  search: function () {
    wx.navigateTo({
      url: '../search/index'
    });
  }
})